/*************************************************
filename	: opengl_graphics_texture.h
author		: Stefan lulham
desc		: Contains the graphics opengl texture 
			  class interface
*************************************************/
#ifndef D_OPENGL_GRAPHICS_TEXTURE_H
#define D_OPENGL_GRAPHICS_TEXTURE_H

#include "platform.h"

#pragma comment(lib, "FreeImage.lib")

#if defined(DELGE_PLATFORM_WIN32)
#include <Windows.h>
#endif
//#include <gl\GL.h>
#include <lib\GL\glew.h>
#include <string>
#include <lib\freeimage\FreeImage.h>
#include <modules\graphics\texture.h>
#include <modules\graphics\color.h>
#include <helpers\math\delge_math.h>

using namespace DelGE::Helpers::Math;
using namespace std;

namespace DelGE
{
	namespace Modules
	{
		namespace Graphics
		{
			class OpenGLTexture : public Texture
			{
			private:
				unsigned int uiTextureID;

			public:
				OpenGLTexture(string sFilepath, 
									  const Color& oMaskColor = DELGE_GRAPHICSCOLOR_NONE, 
									  GraphicsTexture_UVWrapMode eUWrapMode = GraphicsTexture_UVWrapMode_Clamp, 
									  GraphicsTexture_UVWrapMode eVWrapMode = GraphicsTexture_UVWrapMode_Clamp);
				OpenGLTexture(int iWidth, int iHeight,
									  GraphicsTexture_UVWrapMode eUWrapMode = GraphicsTexture_UVWrapMode_Clamp, 
									  GraphicsTexture_UVWrapMode eVWrapMode = GraphicsTexture_UVWrapMode_Clamp);
				~OpenGLTexture();

				unsigned int GetGLTextureID() const;
			};
		}
	}
}

#endif